MkDevTools
Node showing information about used dev tools.¶
Example: From project¶
Pre-Commit¶
This project uses pre-commit to ensure code quality.
A .pre-commit-config.yaml
configuration file tailored for this project is provided
in the root folder.
Config
default_language_version:
python: python3.12
default_stages: [pre-commit]
repos:
- repo: local
hooks:
- id: pytest-check
name: pytest-check
entry: uv run pytest
language: system
# stages: [push]
types: [python]
pass_filenames: false
always_run: true
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
# - id: trailing-whitespace
# - id: check-ast
- id: check-case-conflict
- id: check-docstring-first
- id: check-merge-conflict
# - id: check-yaml
- id: check-toml
- id: check-json
- id: detect-private-key
- id: forbid-new-submodules
# - id: check-added-large-files
# https://pre-commit.com/hooks.html
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.13.0
hooks:
- id: mypy
# args: [--ignore-missing-imports]
additional_dependencies: ["orjson"]
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.7.4
hooks:
- id: ruff
- id: ruff-format
- repo: https://github.com/commitizen-tools/commitizen
rev: v3.30.1
hooks:
- id: commitizen
stages: [commit-msg]
additional_dependencies: [typing-extensions]
PyRight¶
PyRight is used for type checking. You can find the configuration in the
pyproject.toml
file.
Config
MkDocs¶
Ruff is used as a linter. You can find the configuration in the
pyproject.toml
file.
Config
line-length = 90
extend-exclude = [
"docs",
]
target-version = "py312"
[lint]
preview = true
select = [
"A",
"B",
"BLE",
"C",
"C4",
"COM",
"D",
"E",
"EM",
"EXE",
"F",
"FA",
"FLY",
"G",
"I",
"ICN",
"INP",
"INT",
"ISC",
"N",
"PERF",
"PIE",
"PLE",
"PLC",
"PLR",
"PT",
"PTH",
"PYI",
"Q",
"RET",
"RSE",
"RUF",
"SIM",
"SLF",
"SLOT",
"T10",
"TCH",
"TID",
"TRY",
"UP",
"W",
"YTT",
]
ignore = [
"C408",
"B905",
"C901",
"D100",
"D101",
"D102",
"D103",
"D104",
"D105",
"D106",
"D107",
"D203",
"D204",
"D213",
"D215",
"D400",
"D401",
"D404",
"D406",
"D407",
"D408",
"D409",
"D413",
"N813",
"PLC0415",
"PLC2701",
"PLR0904",
"PLR0912",
"PLR0913",
"PLR0915",
"PLR0917",
"PLR6301",
"SLF001",
"RUF012",
"TRY003",
"COM812",
"COM819",
"D206",
"E501",
"ISC001",
"Q000",
"Q001",
"Q002",
"Q003",
"W191",
]
[lint.flake8-quotes]
docstring-quotes = "double"
[lint.isort]
lines-after-imports = 2
force-sort-within-sections = true
combine-as-imports = true
[lint.per-file-ignores]
"__init__.py" = [
"E402",
"I001",
]
[format]
preview = true
docstring-code-format = true
Coverage¶
Coverage is used to monitor test coverage.
Config
Ruff¶
Ruff is used as a linter. You can find the configuration in the
pyproject.toml
file.
Config
line-length = 90
extend-exclude = [
"docs",
]
target-version = "py312"
[lint]
preview = true
select = [
"A",
"B",
"BLE",
"C",
"C4",
"COM",
"D",
"E",
"EM",
"EXE",
"F",
"FA",
"FLY",
"G",
"I",
"ICN",
"INP",
"INT",
"ISC",
"N",
"PERF",
"PIE",
"PLE",
"PLC",
"PLR",
"PT",
"PTH",
"PYI",
"Q",
"RET",
"RSE",
"RUF",
"SIM",
"SLF",
"SLOT",
"T10",
"TCH",
"TID",
"TRY",
"UP",
"W",
"YTT",
]
ignore = [
"C408",
"B905",
"C901",
"D100",
"D101",
"D102",
"D103",
"D104",
"D105",
"D106",
"D107",
"D203",
"D204",
"D213",
"D215",
"D400",
"D401",
"D404",
"D406",
"D407",
"D408",
"D409",
"D413",
"N813",
"PLC0415",
"PLC2701",
"PLR0904",
"PLR0912",
"PLR0913",
"PLR0915",
"PLR0917",
"PLR6301",
"SLF001",
"RUF012",
"TRY003",
"COM812",
"COM819",
"D206",
"E501",
"ISC001",
"Q000",
"Q001",
"Q002",
"Q003",
"W191",
]
[lint.flake8-quotes]
docstring-quotes = "double"
[lint.isort]
lines-after-imports = 2
force-sort-within-sections = true
combine-as-imports = true
[lint.per-file-ignores]
"__init__.py" = [
"E402",
"I001",
]
[format]
preview = true
docstring-code-format = true
MyPy¶
MyPy is used for type checking. You can find the configuration in the
pyproject.toml
file.
Config
## Pre-Commit
This project uses **pre-commit** to ensure code quality.
A `.pre-commit-config.yaml` configuration file tailored for this project is provided
in the root folder.
```` {.md }
# Setup pre-commit hooks for required formatting
pre-commit install
````
??? quote "Config"
```` {.yaml }
default_language_version:
python: python3.12
default_stages: [pre-commit]
repos:
- repo: local
hooks:
- id: pytest-check
name: pytest-check
entry: uv run pytest
language: system
# stages: [push]
types: [python]
pass_filenames: false
always_run: true
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
# - id: trailing-whitespace
# - id: check-ast
- id: check-case-conflict
- id: check-docstring-first
- id: check-merge-conflict
# - id: check-yaml
- id: check-toml
- id: check-json
- id: detect-private-key
- id: forbid-new-submodules
# - id: check-added-large-files
# https://pre-commit.com/hooks.html
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.13.0
hooks:
- id: mypy
# args: [--ignore-missing-imports]
additional_dependencies: ["orjson"]
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.7.4
hooks:
- id: ruff
- id: ruff-format
- repo: https://github.com/commitizen-tools/commitizen
rev: v3.30.1
hooks:
- id: commitizen
stages: [commit-msg]
additional_dependencies: [typing-extensions]
````
??? info "Installing Pre-Commit"
To install pre-commit:
```` {.bash }
pip install pre-commit
````
[More information](https://pre-commit.com)
## PyRight
**PyRight** is used for type checking. You can find the configuration in the
`pyproject.toml` file.
```` {.md }
hatch run pyright --help
````
??? quote "Config"
```` {.toml }
pythonVersion = "3.12"
pythonPlatform = "All"
reportUnusedCallResult = false
reportUnknownVariableType = false
reportAny = false
reportImplicitOverride = false
reportUnannotatedClassAttribute = false
````
??? info "Installing PyRight"
To install pyright:
```` {.bash }
pip install pyright
````
[More information](https://microsoft.github.io/pyright/)
## MkDocs
**Ruff** is used as a linter. You can find the configuration in the
`pyproject.toml` file.
```` {.md }
hatch run ruff --help
````
??? quote "Config"
```` {.toml }
line-length = 90
extend-exclude = [
"docs",
]
target-version = "py312"
[lint]
preview = true
select = [
"A",
"B",
"BLE",
"C",
"C4",
"COM",
"D",
"E",
"EM",
"EXE",
"F",
"FA",
"FLY",
"G",
"I",
"ICN",
"INP",
"INT",
"ISC",
"N",
"PERF",
"PIE",
"PLE",
"PLC",
"PLR",
"PT",
"PTH",
"PYI",
"Q",
"RET",
"RSE",
"RUF",
"SIM",
"SLF",
"SLOT",
"T10",
"TCH",
"TID",
"TRY",
"UP",
"W",
"YTT",
]
ignore = [
"C408",
"B905",
"C901",
"D100",
"D101",
"D102",
"D103",
"D104",
"D105",
"D106",
"D107",
"D203",
"D204",
"D213",
"D215",
"D400",
"D401",
"D404",
"D406",
"D407",
"D408",
"D409",
"D413",
"N813",
"PLC0415",
"PLC2701",
"PLR0904",
"PLR0912",
"PLR0913",
"PLR0915",
"PLR0917",
"PLR6301",
"SLF001",
"RUF012",
"TRY003",
"COM812",
"COM819",
"D206",
"E501",
"ISC001",
"Q000",
"Q001",
"Q002",
"Q003",
"W191",
]
[lint.flake8-quotes]
docstring-quotes = "double"
[lint.isort]
lines-after-imports = 2
force-sort-within-sections = true
combine-as-imports = true
[lint.per-file-ignores]
"__init__.py" = [
"E402",
"I001",
]
[format]
preview = true
docstring-code-format = true
````
??? info "Installing MkDocs"
To install mkdocs:
```` {.bash }
pip install mkdocs
````
[More information](https://mkdocs.org/)
## Coverage
**Coverage** is used to monitor test coverage.
```` {.md }
hatch run coverage run some_module.py
````
??? quote "Config"
```` {.toml }
[report]
exclude_lines = [
"pragma: no cover",
"if TYPE_CHECKING:",
"@overload",
"except ImportError",
"if __name__ == \"__main__\":",
]
````
??? info "Installing Coverage"
To install coverage:
```` {.bash }
pip install coverage
````
[More information](https://coverage.readthedocs.io/)
## Ruff
**Ruff** is used as a linter. You can find the configuration in the
`pyproject.toml` file.
```` {.md }
hatch run ruff --help
````
??? quote "Config"
```` {.toml }
line-length = 90
extend-exclude = [
"docs",
]
target-version = "py312"
[lint]
preview = true
select = [
"A",
"B",
"BLE",
"C",
"C4",
"COM",
"D",
"E",
"EM",
"EXE",
"F",
"FA",
"FLY",
"G",
"I",
"ICN",
"INP",
"INT",
"ISC",
"N",
"PERF",
"PIE",
"PLE",
"PLC",
"PLR",
"PT",
"PTH",
"PYI",
"Q",
"RET",
"RSE",
"RUF",
"SIM",
"SLF",
"SLOT",
"T10",
"TCH",
"TID",
"TRY",
"UP",
"W",
"YTT",
]
ignore = [
"C408",
"B905",
"C901",
"D100",
"D101",
"D102",
"D103",
"D104",
"D105",
"D106",
"D107",
"D203",
"D204",
"D213",
"D215",
"D400",
"D401",
"D404",
"D406",
"D407",
"D408",
"D409",
"D413",
"N813",
"PLC0415",
"PLC2701",
"PLR0904",
"PLR0912",
"PLR0913",
"PLR0915",
"PLR0917",
"PLR6301",
"SLF001",
"RUF012",
"TRY003",
"COM812",
"COM819",
"D206",
"E501",
"ISC001",
"Q000",
"Q001",
"Q002",
"Q003",
"W191",
]
[lint.flake8-quotes]
docstring-quotes = "double"
[lint.isort]
lines-after-imports = 2
force-sort-within-sections = true
combine-as-imports = true
[lint.per-file-ignores]
"__init__.py" = [
"E402",
"I001",
]
[format]
preview = true
docstring-code-format = true
````
??? info "Installing Ruff"
To install ruff:
```` {.bash }
pip install ruff
````
[More information](https://beta.ruff.rs/)
## MyPy
**MyPy** is used for type checking. You can find the configuration in the
`pyproject.toml` file.
```` {.md }
hatch run mypy --help
````
??? quote "Config"
```` {.toml }
python_version = "3.12"
disable_error_code = [
"assignment",
"misc",
"import",
"has-type",
]
check_untyped_defs = true
````
??? info "Installing MyPy"
To install mypy:
```` {.bash }
pip install mypy
````
[More information](https://mypy-lang.org)
Name | Children | Inherits |
---|---|---|
MkTemplate mknodes.templatenodes.mktemplate Node representing a jinja template. |
graph TD
94721312205504["mkdevtools.MkDevTools"]
94721308869584["mktemplate.MkTemplate"]
94721311697232["mkcontainer.MkContainer"]
94721308848336["mknode.MkNode"]
94721311766592["node.Node"]
140564252373184["builtins.object"]
94721308869584 --> 94721312205504
94721311697232 --> 94721308869584
94721308848336 --> 94721311697232
94721311766592 --> 94721308848336
140564252373184 --> 94721311766592
/home/runner/work/mknodes/mknodes/mknodes/templatenodes/mkdevtools/metadata.toml
[metadata]
icon = "mdi:wrench"
status = "new"
name = "MkDevTools"
virtual_children = true
[examples.regular]
title = "From project"
jinja = """
{{ mk.MkDevTools() }}
"""
# [examples.explicit]
# title = "Explicit"
# jinja = """
# {{ ["black"] | MkDevTools }}
# """
[output.markdown]
template = """
{% filter rstrip %}
{% for tool in node.tools %}
{{ tool.title | MkHeader }}
{{ tool.description }}
{% if tool.setup_cmd %}
{{ tool.setup_cmd | render_string | MkCode(language="md")}}
{% endif %}
{{ (tool.cfg.content or "") | MkCode(language=tool.cfg.syntax) | MkAdmonition(collapsible=True, title="Config", typ="quote") }}
{{ ["To install " ~ tool.identifier ~ ":",
("pip install " ~ tool.identifier) | MkCode(language="bash"),
tool.url | MkLink("More information")] | MkAdmonition(collapsible=True, title="Installing " ~ tool.title)}}
{% endfor %}
{% endfilter %}
"""